package com.winai.launcher.override;

import com.winai.launcher.interfaces.CountTimerListener;

import java.util.Observable;

/**
 * @author kangshao
 * @date 5/17/21
 * @desc 蓝牙开启后的倒计时_被观察者
 * 　　　　　　　　┏┓　　　┏┓
 * 　　　　　　　┏┛┻━━━┛┻┓
 * 　　　　　　　┃　　　　　　  ┃
 * 　　　　　　　┃　　　━ 　　　┃
 * 　　　　　　　┃　＞　　　＜　┃
 * 　　　　　　　┃　　　　　　　┃
 * 　　　　　　　┃ ...　⌒　... ┃
 * 　　　　　　　┃　　　　　　　┃
 * 　　　　　　　 ┗━┓　　　 ┏━┛
 * 　　　　　　　　　┃　　　┃　Code is far away from bug with the animal protecting
 * 　　　　　　　　　┃　　　┃   神兽保佑,代码无bug
 * 　　　　　　　　　┃　　　┃
 * 　　　　　　　　　┃　　　┃
 * 　　　　　　　　　┃　　　┃
 * 　　　　　　　　　┃　　　┃
 * 　　　　　　　　　┃　　　┗━━━┓
 * 　　　　　　　　　┃　　　　　　　┣┓
 * 　　　　　　　　　┃　　　　　　　┏┛
 * 　　　　　　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　　　　　　┃┫┫　┃┫┫
 * 　　　　　　　　　　┗┻┛　┗┻┛
 */
public class BluetoothCountTimerObserver extends Observable {
    private static BluetoothCountTimerObserver observer;
    private int countdown = 0;//倒计时，单位秒。

    public static BluetoothCountTimerObserver getInstance() {
        if (observer == null) {
            synchronized (BluetoothCountTimerObserver.class) {
                observer = new BluetoothCountTimerObserver();
            }
        }
        return observer;
    }

    public void startTimer() {
        AlarmCountTimer.start(2 * 60, new CountTimerListener() {
            @Override
            public void onFinish() {
                AlarmCountTimer.release();
                countdown = 0;
                //发送观察者通知
                setChanged();
                notifyObservers(countdown);
            }

            @Override
            public void onTick(long millisUntilFinished) {
                countdown = ((int) (millisUntilFinished / 1000));
                //发送观察者通知
                setChanged();
                notifyObservers(countdown);
            }
        });
    }

    public void stopTimer() {
        AlarmCountTimer.release();
        countdown = 0;
        //发送观察者通知
        setChanged();
        notifyObservers(countdown);
    }
}
